package com.test.excelservice.scheduled;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.io.File;

/**
 * 定时任务删除指定文件夹下的所有文件
 * @author shilei
 */
@Component
public class RemoveFileScheduled {

    /**
     * PATH 服务器下指定文件目录
     */
    public static final  String  PATH = "/app/excel-service/exceldata/data";

    private final Logger logger = LoggerFactory.getLogger(RemoveFileScheduled.class);

    @Scheduled(cron = "0 0 00 * * ?")
    public void executeRemove() {
        logger.info("定时任务移除文件开始...");
        removeFile(new File(PATH));
        logger.info("定时任务移除文件结束...");
    }

    public  void removeFile(File file){
        if (file == null || !file.exists()){
            logger.error("文件删除失败,请检查文件路径是否正确");
            return;
        }
        //取得这个目录下的所有子文件对象
        File[] files = file.listFiles();
        //遍历该目录下的文件对象
        for (File f: files){
            String name = file.getName();
            logger.info("文件名为"+ name);
            //判断子目录是否存在子目录,如果是文件则删除
            if (f.isDirectory()){
                removeFile(f);
            }else {
                f.delete();
            }
        }
        //删除空文件夹  for循环已经把上一层节点的目录清空。
        file.delete();
    }
}
